/*
 * CConsultarInformacionTema.cpp - Grupo 5 - Prog. Avanzada 2011
 *
 *  Javier Dominguez - 4.901.161-6
 *  Marcelo Parada - 1.977.094-9
 *  Rodrigo Ruiz - 4.481.611-2
 *  Maximiliano Silvera - 4.106.938-6
 */

#include "CConsultarInformacionTema.h"

CConsultarInformacionTema::CConsultarInformacionTema()
{
}

ColConcrete<ReproduccionDT*> *CConsultarInformacionTema::obtenerReproduccionesTema(int idTema)
{
	return HUsuario::getInstance()->obtenerReproduccionesTema(idTema);
}

TemaDT *CConsultarInformacionTema::obtenerInfoTema(int id)
{
	// Obtengo el tema y lo transformo a temaDT
	Tema *tema = HElemento::getInstance()->obtenerTema(id);

	TemaDT* temaDT = NULL;

	if(tema->tipoTema() == Single::TIPO_TEMA)
	{
		Single *single = dynamic_cast<Single*>(tema);

		temaDT = new SingleDT(single->getId(), single->getAnioGrabacion(), single->getTitulo(), single->getTiempo());
	}
	else if(tema->tipoTema() == Pista::TIPO_TEMA)
	{
		Pista *pista = dynamic_cast<Pista*>(tema);

		temaDT = new PistaDT(pista->getId(), pista->getNumero(), pista->getAlbum()->getNombre(), pista->getAlbum()->getAnioEdicion() ,pista->getTitulo(), pista->getTiempo());
	}

	// Transformo los artistas del tema
	ConcreteIterator<Artista*> *iterArtista = tema->getArtistas()->getIterator();

	Artista *currArtista = NULL;

	Solista *currSolista = NULL;

	Banda *currBanda = NULL;

	while(iterArtista->hasCurrent())
	{
		currArtista = iterArtista->current();

		if(currArtista->tipoArtista() == Solista::TIPO_ARTISTA)
		{
			currSolista = dynamic_cast<Solista*>(currArtista);

			temaDT->getArtistas()->add(new SolistaDT(currSolista->getNombre()));
		}
		else if(currArtista->tipoArtista() == Banda::TIPO_ARTISTA)
		{
			currBanda = dynamic_cast<Banda*>(currArtista);

			temaDT->getArtistas()->add(new BandaDT(currBanda->getNombre(), currBanda->getIntegrantes()));
		}

		iterArtista->next();
	}

	return temaDT;
}

CConsultarInformacionTema::~CConsultarInformacionTema()
{
}
